//
//  HD_NKM_Mediator.h
//  HDWuDaDaoServiceCenter
//
//  Created by HDNiuKuiming on 2017/5/12.
//  Copyright © 2017年 HDNiuKuiming. All rights reserved.
//

/*
 版本：V1.0
 开发者：NKM
 更新时间：2017-11-3
 功能描述：基于蓝牙功能，将收到的BLE进行排序整理，整理后，将当个的beacon和全部的beacon以通知的形式发出去，也可以处理一段时间未收到蓝牙号的情况
 （1）对于单点定位，默认是取两组号码，两个号码一致，触发；
 （2）对于全部的beacon信息，只处理阈值之内的蓝牙；
 （3）对于未开启定位功能的，利用代理去处理，默认是弹框；
 （4）不再支持。。。。连续定位平滑动画效果原理：假如接口每2秒上传一次连续定位的请求，那么将连续定位图标位置移动动画的时长设置成2秒，这样在动画结束后，刚好请求，执行下一次的平移动画，让用户感觉不到中间的跳动过程；成都连续定位如果是1秒钟上传一次，连续定位的点太飘；目前使用的是2秒上传一次请求；
  (5) 不处理隔一，收到号在阈值范围内，就抛消息；
 */
/*
 初始化：
 HD_NKM_Mediator *mediator = [HD_NKM_Mediator shareInstance];
 [mediator startRangingAllRegions];
 
 如果需要修改config
 // beacon所有的阈值放在config里面，不赋值，使用的是默认值
 HD_NKM_Mediator_Config *config = [HD_NKM_Mediator_Config new];
 config.ThreshHold_Dis          = 5;
 config.needNoBeaconNoti        = YES;
 config.No_Beacon_Last_Time     = 10;
 [mediator resetConfig:config];
 */
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
#import <CoreGraphics/CoreGraphics.h>
#import <UIKit/UIKit.h>
#import "APLDefaults.h"
#import "HD_NKM_Mediator_Config.h"
#import "HD_Beacon_Obj.h"

#define iBeacon_Send_Notification          @"iBeacon_Send_Notification"          //收到讲解号
#define All_iBeacon_Send_Notification      @"All_iBeacon_Send_Notification"
#define No_Beacon_Receive_Notification     @"No_Beacon_Receive_Notification"
#define No_Beacon_Receive_For_Notification @"No_Beacon_Receive_For_Notification"

@protocol HD_NKM_Mediator_Delegate <NSObject>
@optional

- (void)userDeniedLocation; // 用户不允许定位时候，是否自定义弹框提示，默认是系统的Alert

@end


@interface HD_NKM_Mediator : NSObject<CLLocationManagerDelegate>
{
    NSMutableArray *topBeaconArray;    // 计算距离的数组
    CGFloat        playDis;            // 距离，用于蓝牙算法
    
    NSDate         *noBeaconStartTime; // 记录最近一次收号时间
    NSDate         *noBeaconEndTime;   // 计时器当前时间，用于记录时间差
    NSTimer        *noBeaconTimer;     // 计时器，
}

@property (nonatomic, assign) id<HD_NKM_Mediator_Delegate> delegate;
@property (nonatomic, strong, readonly) HD_NKM_Mediator_Config   *beaconConfig;
@property (nonatomic, assign, readonly) BOOL isSystemLocateEnable; // 是否允许定位


+ (id)shareInstance; // 初始化，项目中一次初始化以后，不再释放，

- (void)resetConfig:(HD_NKM_Mediator_Config *)config; // 修改收号的默认参数
- (void)startRangingAllRegions; // 开始扫描
- (void)stopRangingAllRegions;  // 停止扫描
- (NSString *)nowThre;          // 当前config的阈值

@end
